package net.perretxiko.dao;


import java.util.List;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.sql.DataSource;

import net.perretxiko.form.Erabiltzaile;

import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

@Transactional
@Repository
public class ErabiltzaileDAOMySQLImpl extends JdbcDaoSupport  implements ErabiltzaileDAO {

	@Autowired
	private SessionFactory sessionFactory;
	private DataSource dataSource;
	
	@Autowired
	  public void TestDaoImpl(DataSource dataSource) {
	    setDataSource(dataSource);
	  }
	

	 

//	public DataSource getDataSource() {
//		return dataSource;
//	}
//	public void setDataSource(DataSource dataSource) {
//		this.dataSource = dataSource;
//	}
	public void addErabiltzaile(Erabiltzaile erabiltzaile) {
		sessionFactory.getCurrentSession().save(erabiltzaile);
	}
	@Transactional
	public List<Erabiltzaile> listErabiltzaile() {
		return sessionFactory.getCurrentSession().createQuery("from Erabiltzaile").list();
	}

	public void removeErabiltzaile(Integer id) {
		Erabiltzaile erabiltzaile = (Erabiltzaile) sessionFactory.getCurrentSession().load(
				Erabiltzaile.class, id);
		if (null != erabiltzaile) {
			sessionFactory.getCurrentSession().delete(erabiltzaile);
		}

	}

	public boolean baieztatuErabiltzaile(Erabiltzaile erabiltzaile) {
		List<Erabiltzaile> usr = sessionFactory.getCurrentSession().find("from Erabiltzaile where erabiltzailea = '"+erabiltzaile.getErabiltzailea()+"' and pasahitza = '"+erabiltzaile.getPasahitza()+"'");
		if (usr.size()>0) {
			return true;
	    } else {
	    	return false;
		}
	}
	public Erabiltzaile getErabiltzaile(String izena) {
		List<Erabiltzaile> usr = sessionFactory.getCurrentSession().find("from Erabiltzaile where erabiltzailea = '"+izena+"'");
		if(usr.size()!=0){
		return usr.get(0);
		} else{
			return null;
		}
		
	}
	
	public void addUser(int id, String izena, String pasahitza) {
		String sql = "INSERT INTO users (USER_ID, USERNAME,PASSWORD, ENABLED) VALUES (?,?,?,TRUE)";
		System.out.println(sql);
		getJdbcTemplate().update(sql, new Object[] { id,
				izena,pasahitza});	
	}
	public void aldatuErabiltzaile(Erabiltzaile erabiltzaile) {
		List<Erabiltzaile> usr = sessionFactory.getCurrentSession().find("from Erabiltzaile where erabiltzailea = '"+erabiltzaile.getErabiltzailea()+"'");
		Erabiltzaile era = usr.get(0);
		era.setAbizena(erabiltzaile.getAbizena());
		era.setEmaila(erabiltzaile.getEmaila());
		era.setErabiltzailea(erabiltzaile.getErabiltzailea());
		era.setHerrialdea(erabiltzaile.getHerrialdea());
		era.setIzena(erabiltzaile.getIzena());
		era.setJaiotzeeguna(erabiltzaile.getJaiotzeeguna());
		era.setPasahitza(erabiltzaile.getPasahitza());
		sessionFactory.getCurrentSession().update(era);
		
	}
}
